Skip to content

fix: atomic review log helpers + platform-agnostic skill templates (v0.6.5)#150

Open
garrytan wants to merge 12 commits intomainfrom
garrytan/fix-slug-clean
Open

fix: atomic review log helpers + platform-agnostic skill templates (v0.6.5)#150
garrytan wants to merge 12 commits intomainfrom
garrytan/fix-slug-clean

Conversation

@garrytan
Copy link
Owner

@garrytan garrytan commented Mar 18, 2026

Summary

Bug fix: slash in branch names

  • Review log no longer breaks on branch names with / (e.g. garrytan/design-system). New gstack-review-log and gstack-review-read atomic helpers encapsulate slug detection + mkdir + file I/O in a single command.
  • All 12 skill templates updated to use the new helpers.

Platform-agnostic: remove Rails-isms

  • /ship Step 3 now reads CLAUDE.md for test commands instead of hardcoding bin/test-lane and npm run test. If CLAUDE.md has no test commands, asks the user and persists the answer.
  • /ship Step 3.25 now reads CLAUDE.md for eval commands instead of hardcoding app/services/*_prompt_builder.rb patterns. Project's eval system handles diff-based selection.
  • review/checklist.md examples now show equivalents across Rails, React, Django, Prisma, Vue, SQLAlchemy, Go.
  • Plan review templates: framework-agnostic grep patterns, generic error examples.
  • Retro/review templates: generic directory and file extension examples.
  • New "Platform-agnostic design" principle in CLAUDE.md: "Read CLAUDE.md, ask if missing, persist the answer."

Test Coverage

263 tests pass, 0 failures. New tests:

  • Blocklist regression: greps ALL generated SKILL.md files for bin/test-lane, RAILS_ENV, _prompt_builder.rb, --include="*.rb" — zero matches
  • Multi-framework: review checklist mentions Rails, React, Django, Prisma
  • Integration tests for gstack-review-log and gstack-review-read

Pre-Landing Review

No issues found. Template-only changes (skill prompts + review checklist text).

Test plan

  • All skill-validation tests pass (263 tests)
  • gen-skill-docs regenerates cleanly (15 files)
  • No merge conflicts with main
  • Blocklist regression prevents re-introduction of Rails-isms

🤖 Generated with Claude Code

garrytan and others added 10 commits March 17, 2026 21:00
Branch names with `/` (e.g. garrytan/design-system) break review log
filepaths when Claude Code runs multi-line bash blocks as separate shell
invocations — eval sets $SLUG/$BRANCH in shell 1, but they're gone by
the time mkdir and echo run in shells 2+3.

These two scripts encapsulate the full operation (slug detection + mkdir
+ file I/O) in a single command, eliminating the variable persistence
problem. Both support GSTACK_HOME env var override for testability.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Review log writes now use `gstack-review-log` (single command)
- Review dashboard reads now use `gstack-review-read` (single command)
- Remaining eval+mkdir blocks use && chaining for variable persistence
- Regenerated all 15 SKILL.md files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Full temp-dir integration tests via GSTACK_HOME env var override
- Tests: file creation, append behavior, slash sanitization, NO_REVIEWS
  fallback, review content read, CONFIG separator
- Regression tests: generated SKILL.md files use new helpers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…instead

Step 3 now reads CLAUDE.md for test commands instead of hardcoding
bin/test-lane and npm run test. If no test commands found, AskUserQuestion
with option to search the repo and persist to CLAUDE.md.

Step 3.25 now reads CLAUDE.md for eval commands instead of hardcoding
Rails-specific file patterns. Project's eval system handles diff-based
selection internally.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace Rails-only patterns with universal examples showing equivalents
across Rails, Node/Prisma, Python/Django, Go, React, and Vue.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- CEO review: replace --include="*.rb" grep with --exclude-dir pattern,
  replace find -newer Gemfile.lock with git log --since, genericize
  Error & Rescue Map example table
- Eng review: "JS or Rails test" → "corresponding test"

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- retro: app/services/ → src/services/ in examples and JSON schema
- review: app/models/post.rb → src/models/post.ts in example output

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Codifies the "Learn Your Project" rule: skills must never hardcode
framework-specific commands. Read CLAUDE.md, ask if missing, persist
the answer. Prevents Rails-isms from recurring.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Greps all generated SKILL.md files and templates for a blocklist of
Rails-specific patterns (bin/test-lane, RAILS_ENV, _prompt_builder.rb,
--include="*.rb"). Verifies review checklist mentions multiple frameworks.
Prevents re-introduction of framework-specific hardcoding.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@garrytan garrytan changed the title fix: atomic review log helpers — slash in branch names (v0.6.5) fix: atomic review log helpers + platform-agnostic skill templates (v0.6.5) Mar 18, 2026
garrytan and others added 2 commits March 17, 2026 22:17
Dedicated section with the two commands /ship needs: bun test (free,
every commit) and bun run test:evals (paid, before shipping). This is
the section /ship Step 3 reads to discover what tests to run.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Step 3 and 3.25 now match ## Testing, ## Test Commands, ## Tests, and
## Commands — covering both gstack's own CLAUDE.md (## Testing) and
projects like garryslist (## Test Commands).

Added dedicated ## Testing section to gstack's CLAUDE.md so /ship
finds bun test and bun run test:evals without ambiguity.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant